<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>artefact-base - Layer Documentation</title>
    <style>
        body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; line-height: 1.6; }
        .header { border-bottom: 2px solid #eee; padding-bottom: 20px; margin-bottom: 30px; }
        .section { margin-bottom: 30px; }
        .badge { display: inline-block; background: #007acc; color: white; padding: 2px 8px; border-radius: 3px; font-size: 12px; margin-right: 10px; }
        .policy-immediate { background: #28a745; color: white; text-decoration: none; }
        .policy-lazy { background: #ffc107; color: #212529; text-decoration: none; }
        .policy-force { background: #dc3545; color: white; text-decoration: none; }
        .policy-skip { background: #6c757d; color: white; text-decoration: none; }
        .policy-immediate:hover { background: #1e7e34; }
        .policy-lazy:hover { background: #e0a800; }
        .policy-force:hover { background: #c82333; }
        .policy-skip:hover { background: #545b62; }
        table { width: 100%; border-collapse: collapse; margin-top: 10px; table-layout: auto; }
        th, td { text-align: left; padding: 8px 12px; border-bottom: 1px solid #ddd; }
        th { background: #f8f9fa; font-weight: 600; }
        td:nth-child(3) {
            width: auto;
        }
        code { background: #f1f3f4; padding: 2px 4px; border-radius: 3px; font-family: 'Monaco', monospace; font-size: 14px; }
        code.long-default { word-break: break-all; white-space: pre-wrap; display: block; min-width: 30ch; }
        .back-link { margin-bottom: 20px; }
        .back-link a { text-decoration: none; color: #007acc; }
        .deps { display: flex; flex-wrap: wrap; gap: 5px; }
        .dep-badge { background: #28a745; color: white; padding: 2px 6px; border-radius: 3px; font-size: 11px; text-decoration: none; }
        .dep-badge:hover { background: #1e7e34; }
        /* Main content headers styling */
        h1, h2, h3, h4, h5, h6 { color: #333; margin-top: 20px; margin-bottom: 10px; }
        /* Companion documentation content styling */
        .companion-content h1, .companion-content h2, .companion-content h3, .companion-content h4, .companion-content h5, .companion-content h6 { color: #333; margin-top: 20px; margin-bottom: 10px; }
        .companion-content p { margin: 10px 0; }
        .companion-content ul, .companion-content ol { margin: 10px 0; padding-left: 30px; }
        .companion-content blockquote { border-left: 4px solid #007acc; padding-left: 15px; margin: 15px 0; color: #666; background: #f8f9fa; padding: 10px 15px; }
        .companion-content pre { background: #f8f9fa; padding: 15px; border-radius: 5px; overflow-x: auto; border-left: 4px solid #007acc; }
        .companion-content table { border: 1px solid #ddd; }
        .companion-content th, .companion-content td { border: 1px solid #ddd; }

        /* AsciiDoc admonition blocks (NOTE, TIP, WARNING, etc.) */
        .admonitionblock {
            margin: 1.5em 0;
            padding: 0.4em 0.6em;
            border-left: 4px solid;
            background: #f8f9fa;
            border-radius: 0 4px 4px 0;
        }

        .admonitionblock .title {
            font-weight: bold;
            text-transform: uppercase;
            font-size: 0.85em;
            margin-bottom: 0.25em;
            letter-spacing: 0.5px;
        }

        .admonitionblock .content {
            margin: 0;
        }

        /* Reduce spacing for paragraphs inside admonitions */
        .admonitionblock p {
            margin: 0.25em 0;
        }

        .admonitionblock p:first-child {
            margin-top: 0;
        }

        .admonitionblock p:last-child {
            margin-bottom: 0;
        }

        /* Specific admonition types */
        .admonitionblock.note {
            border-color: #17a2b8;
            background: #d1ecf1;
        }

        .admonitionblock.note .title {
            color: #0c5460;
        }

        .admonitionblock.tip {
            border-color: #28a745;
            background: #d4edda;
        }

        .admonitionblock.tip .title {
            color: #155724;
        }

        .admonitionblock.important {
            border-color: #ffc107;
            background: #fff3cd;
        }

        .admonitionblock.important .title {
            color: #856404;
        }

        .admonitionblock.warning,
        .admonitionblock.caution {
            border-color: #dc3545;
            background: #f8d7da;
        }

        .admonitionblock.warning .title,
        .admonitionblock.caution .title {
            color: #721c24;
        }
    </style>
</head>
<body>
    <div class="back-link">
        <a href="index.html">← Back to Layer Index</a>
    </div>

    <div class="header">
        <h1>artefact-base</h1>
        <span class="badge">build</span>
        <span class="badge">v1.0.0</span>
        <p>Base artefact naming, versioning and organisation for
 filesystem builds.</p>
    </div>

    

    
    <div class="section">
        <h2>Relationships</h2>
        
        
        <p><strong>Required by:</strong></p>
        <div class="deps">
            
            <a href="deploy-base.html" class="dep-badge">deploy-base</a>
            
            <a href="essential.html" class="dep-badge">essential</a>
            
            <a href="image-base.html" class="dep-badge">image-base</a>
            
            <a href="sbom-base.html" class="dep-badge">sbom-base</a>
            
            <a href="target-config.html" class="dep-badge">target-config</a>
            
        </div>
        
        
        
    </div>
    

    
    <div class="section">
        <h2>Configuration Variables</h2>
        
        
        <p><strong>Declares</strong> (prefix: <code>artefact</code>):</p>
        <table>
            <thead>
                <tr>
                    <th>Variable</th>
                    <th>Description</th>
                    <th>Default</th>
                    <th>Validation</th>
                    <th>Policy</th>
                </tr>
            </thead>
            <tbody>
                
                <tr>
                    <td><code>IGconf_artefact_target_name</code></td>
                    <td>Base name for the bdebstrap target (directory or
 file). This defines what the bdebstrap target will be called. Can be a
 directory name (eg, 'rootfs', 'chroot') for directory targets, or a filename
 (eg, 'filesystem.tar.gz', 'base-system.tgz') for archive targets. The target
 type affects post-build processing - hooks should handle both directory and
 file targets appropriately.</td>
                    <td>
                       
                           
                           <code>filesystem</code>
                           
                       
                    </td>
                    <td>Non-empty string value</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-immediate" title="Click for policy and validation help">immediate</a>
                    </td>
                </tr>
                
                <tr>
                    <td><code>IGconf_artefact_version</code></td>
                    <td>Version identifier for artefacts. Used as a
 component in artefact naming and organisation. Supports semantic versions,
 git commit hashes, or any other meaningful identifier. This version
 is used both in the default context name and can be referenced by
 other layers for consistent versioning across artefacts.</td>
                    <td>
                       
                           
                           <code class="long-default">$(git describe --tags --always --dirty 2>/dev/null || date +%Y-%m-%d)</code>
                           
                       
                    </td>
                    <td>Non-empty string value</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-immediate" title="Click for policy and validation help">immediate</a>
                    </td>
                </tr>
                
                <tr>
                    <td><code>IGconf_artefact_context</code></td>
                    <td>Default context name for artefact organisation
 This provides a meaningful directory name for organizing build artefacts
 when no image layer is present (filesystem-only builds). The context
 creates a namespace for separating different builds and their artefacts.
 When image layers are present, the image name takes precedence over this
 context for artefact organisation.</td>
                    <td>
                       
                           
                           <code class="long-default">chroot-${IGconf_artefact_version}</code>
                           
                       
                    </td>
                    <td>Non-empty string value</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-immediate" title="Click for policy and validation help">immediate</a>
                    </td>
                </tr>
                
            </tbody>
        </table>
        
    </div>
    

    

    <div class="section">
        <h2>Attributes</h2>
        <p><strong>File:</strong> <code>base/artefact-base.yaml</code></p>
        
    </div>
</body>
</html>